#ifndef H_NYMPHAEA_STORAGE_SAMPLE_SET
#define H_NYMPHAEA_STORAGE_SAMPLE_SET
/*
 * project: nymphaea
 * module: storage::sample_set
 * purpose: sample set containing multiple sample, for training use
 * creation date: 2010-MAY-15
 * created by: kaby<entelechie@gmail.com>
 * license: GNU General Public License v3
 */

#include <string>

namespace nymphaea
{
namespace matrices
{
	class Matrix;
}

namespace sample 
{
class Sample;

class SampleSet
{
public:
	SampleSet();
	~SampleSet();

	int load_from_bytes(const std::string& data);
private:
	matrices::Matrix* mpFeature;
	matrices::Matrix* mpTarget;
	matrices::Matrix* mpWeight;
	size_t mFeatureDim;
	size_t mTargetDim;
	size_t mSampleNumber;

	void init_matrix();
	int load_header_from_bytes(const std::string& data);
	int load_sample_from_bytes(const std::string& data, size_t idx);
};

}
}

#endif
